<?php
//  @arquivo = /controller/ComentarioController.php
//  MVC : controller
//  objeto : Comentario

require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/modelo/Comentario.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/modelo/StatusComentario.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/modelo/Noticia.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/modelo/Usuario.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/modelo/TipoUsuario.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/conexao/ConexaoBanco.php');


	class ComentarioController {
		private $comentario;
		private $tipoNoticia;
		private $usuario;
		private $tipoUsuario;
		private $noticia;
		private $banco;
		private $arrNoticias;
		private $arrComentario;
	
		var $campos = NULL;
		var $retorno =  NULL;
	
		/* construtor padrão, cria comentario, crud e banco quando instanciado */
		public function __construct(){
			$this->comentario = new Comentario();
			$this->noticia = new Noticia();
			$this->banco = new ConexaoBanco();
			$this->usuario = new Usuario();
			$this->tipoUsuario = new TipoUsuario();
			$this->statusComentario = new StatusComentario();
		}
		
		public function recebePost($acao){
			if($acao == "cadastrar" && isset($_POST["submit"])){
				 if($_POST['comentario'] != NULL){
					if(isset($_POST['anonimo'])){
						$this->comentario->setAnonimo(filter_input(INPUT_POST, 'anonimo', FILTER_SANITIZE_SPECIAL_CHARS));
						
					}
					$this->comentario->setUsuario(filter_input(INPUT_POST, 'nomeComentario', FILTER_SANITIZE_SPECIAL_CHARS));
					$this->comentario->setEmail(filter_input(INPUT_POST, 'emailComentario', FILTER_SANITIZE_SPECIAL_CHARS));
					$this->comentario->setConteudo(filter_input(INPUT_POST, 'comentario', FILTER_SANITIZE_SPECIAL_CHARS));
					$this->comentario->setDataHora(date('d/m/Y'));
					//$this->usuario->setIdUsuario(filter_input(INPUT_POST, 'id_usuario', FILTER_SANITIZE_SPECIAL_CHARS));
					//$this->comentario->setUsuarioId($this->usuario);
					$this->noticia->setIdNoticia(filter_input(INPUT_GET, 'id', FILTER_SANITIZE_SPECIAL_CHARS));
					$this->comentario->setNoticiaId($this->noticia);
					$this->statusComentario->setIdStatusComentario(1);
					$this->comentario->setStatusComentarioId($this->statusComentario);
					
					if ($this->comentario != NULL) {
						$control = new ComentarioController();
						$control->cadastrar($this->comentario);
						
						//header("Location: ?pg=noticia&id=$id");
						unset($this->comentario, $this->noticia);
					}
				}
			}
			
			//validar os comentários enviados
			if($acao == "validar" && isset($_POST["aprovar"])){
				$cod = $_POST['cod'];
			
				$this->banco->conectar();
				try {
					$sql = "UPDATE comentario SET status_comentario_id = 2 WHERE id_comentario = $cod";
					$this->banco->executarSql($sql);
				} catch (Exception $e) {
					$e->getMessage();
				}
				$this->banco->desconectar();
			
				
			}
			if($acao == "validar" && isset($_POST['reprovar'])){
				$cod = $_POST['cod'];
				
				$this->banco->conectar();
				try {
					$sql = "UPDATE comentario SET status_comentario_id = 3 WHERE id_comentario = $cod";
					$this->banco->executarSql($sql);
				} catch (Exception $e) {
					$e->getMessage();
				}
				$this->banco->desconectar();
			
			}
		}
		
		/* cadastrar noticia */
		public function cadastrar(Comentario $comentario) {
			$this->banco->conectar();
				
			try {
				$sql = "INSERT INTO comentario (id_comentario, usuario, email, comentario, data_hora, noticia_id, status_comentario_id, anonimo, ip_computador)
					VALUES 
					('',
					'".$comentario->getUsuario()."',
					'".$comentario->getEmail()."',
					'".$comentario->getConteudo()."',
					'".date('Y/m/d H:i:s')."',
					'".$comentario->getNoticiaId()->getIdNoticia()."',
					'".$comentario->getStatusComentarioId()->getIdStatusComentario()."',
					'".$comentario->getAnonimo()."',
					'')";
				//echo $sql;
				
				$this->banco->executarSql($sql);
				//return mysql_insert_id(); //retorna o ultimo id cadastrado
		
				if($this->retorno == TRUE){
					//redireciona para uma pagina ou manda mensagem ao usuário
				}
				else{
					//manda msg de erro ao usuario
				}
		
			} catch (Exception $e) {
				$e->getMessage();
			}
			$this->banco->desconectar();
		}
	
		public function editar(Comentario $comentario) {
			$this->banco->conectar();
			try {
				$sql = "UPDATE comentario SET
						comentario = '".$comentario->getConteudo()."',
						data_hora = '".$comentario->getDataHora()."',
						usuario_id = '".$comentario->getUsuarioId()."',
						noticia_id = '".$comentario->getNoticiaId()."',		
						status_comentario_id = '".$comentario->getStatusComentarioId()."'
						 WHERE id_noticia = ".$comentario->getIdComentario();
				$this->banco->executarSql($sql);
		
				if($this->retorno == TRUE){
					//redireciona para uma pagina ou manda mensagem ao usuário
				}
				else{
					//manda msg de erro ao usuario
				}
		
			} catch (Exception $e) {
				$e->getMessage();
			}
			$this->banco->desconectar();
		}//fim editar
		
		public function excluir($comentarioId){
			$this->banco->conectar();
				
			try {
				$sql = "DELETE FROM comentario WHERE id_comentario = ".$comentarioId;
				$this->banco->exercutarSql($sql);
		
				/*	verifica se foi excluido	*/
				if($this->retorno == TRUE){
					//redireciona para uma pagina ou manda mensagem ao usuário
				}
				else{
					//manda msg de erro ao usuario
				}
			} catch (Exception $e) {
				$e->getMessage();
			}
			$this->banco->desconectar();
		}//fim excluir
		// lista comentário para mostrar na tela da notícia
		public function listarComentarios($id_noticia){
			$indice = 0;	
			$sql = "SELECT * FROM comentario, status_comentario 
					WHERE comentario.status_comentario_id = status_comentario.id_status_comentario 
					AND comentario.noticia_id = ".$id_noticia." AND status_comentario_id = 2";
			$this->banco->conectar();
				
			try {
				$arr = $this->banco->executarConsulta($sql);
				//print_r($arr);
				while($row = mysql_fetch_array($arr)){
					
					$comentario = new Comentario();
					$noticia = new Noticia();
						$noticia->setIdNoticia($row['noticia_id']);
					$statusComentario = new StatusComentario();
						$statusComentario->setIdStatusComentario($row['id_status_comentario']);
					
					$comentario->setIdComentario($row['id_comentario']);
					$comentario->setConteudo($row['comentario']);
					$comentario->setDataHora($row['data_hora']);
					$comentario->setAnonimo($row['anonimo']);
					$comentario->setUsuario($row['usuario']);
					
					$comentario->setNoticiaId($noticia);
					//$comentario->setUsuarioId($usuario);
					$comentario->setStatusComentarioId($statusComentario);
					
					$this->arrComentario[$indice] = $comentario;
					$indice++;
				}
				return $this->arrComentario;
		
			} catch (Exception $e) {
			}
				
		}
		public function listarTodos($inicio, $quantidade){
			$indice = 0;
			$sql = "SELECT * FROM comentario, status_comentario 
					WHERE comentario.status_comentario_id = status_comentario.id_status_comentario ORDER BY data_hora DESC LIMIT $inicio, $quantidade";
			$this->banco->conectar();
		
			try {
				$arr = $this->banco->executarConsulta($sql);
				//print_r($arr);
				while($row = mysql_fetch_array($arr)){
						
					$comentario = new Comentario();
					$noticia = new Noticia();
						$noticia->setIdNoticia($row['noticia_id']);
					$statusComentario = new StatusComentario();
						$statusComentario->setIdStatusComentario($row['id_status_comentario']);
						$statusComentario->setDescricao($row['descricao']);
					$comentario->setUsuario($row['usuario']);
					$comentario->setEmail($row['email']);
					$comentario->setIdComentario($row['id_comentario']);
					$comentario->setConteudo($row['comentario']);
					$comentario->setDataHora($row['data_hora']);
					$comentario->setAnonimo($row['anonimo']);
						
						
					$comentario->setNoticiaId($noticia);
					$comentario->setStatusComentarioId($statusComentario);
						
					$this->arrComentario[$indice] = $comentario;
					$indice++;
				}
				return $this->arrComentario;
		
			} catch (Exception $e) {
			}
		
		}
	}
?>